<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>56_对象作为参数</title>
		<script>
			/* 
			 */
			function fn(a) {
				// a = {} // 修改变量时，只会影响当前的变量
				a.name = "猪八戒" // 修改对象时，如果有其他变量指向该对象则所有指向该对象的变量都会受到影响
				console.log(a)
			}
			//对象可以作为参数传递
			let obj = {
				name: "孙悟空"
			}
			//传递实参时，传递并不是变量本身，而是变量中存储的值。
			fn(obj)
			console.log(obj) //方法体中修改了name属性的值，这里打印会改变吗？会

			// 函数每次调用，都会重新创建默认值
			function fn2(a = { name: "沙和尚" }) {
				console.log("a =", a)
				a.name = "唐僧"
				console.log("a =", a)
			}
			fn2() // 打印的是沙和尚唐僧
			fn2() // 沙和尚 唐僧or 唐僧唐僧？打印的也是沙和尚唐僧
		</script>
	</head>
	<body>
	</body>
</html>